#example7_10_resample.py
#coding=utf-8
import matplotlib.pyplot as plt
import pandas as pd

# 打开文件
data=pd.read_excel('multi_stock.xlsx',index_col='date',usecols='A:D')
print("原始数据的前10行：\n",data[:10])
#print("查看行标签：\n", data.index)

#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False    # 用来正常显示负号

# 创建图
plt.figure(figsize=(10,7))   #设置图像大小

ax1 = plt.subplot(3,1,1)
ax2 = plt.subplot(3,1,2)
ax3 = plt.subplot(3,1,3)

plt.sca(ax1)    # 选择子图
plt.plot(data.index, data["C"], "r--", label="C")
plt.plot(data.index, data["D"], "g-.", label="D")
plt.plot(data.index, data["M"], "b-", label="M")
# 设置刻度字体大小
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.title("原始数据", fontsize=15)
plt.xlabel("时间", fontsize=15)
plt.ylabel("股票价格", fontsize=15)
plt.legend()

# 重新采样
# resample()返回一个pandas.core.resample.DatetimeIndexResampler
# DatetimeIndexResampler对象里面包含的是分组后的详细数据
# 需要添加统计方法（如mean、sum等）计算后得到DataFrame
'''
data1 = data.resample("Y")
i=0
for x in data1:
    print(x)
    i += 1
    if i==3:
        break
'''

data2 = data.resample("Y").mean()
print("以年为时间段进行采样，并取均值：\n",data2[:5])

plt.sca(ax2)    # 选择子图
plt.plot(data2.index, data2["C"], "r--", label="C")
plt.plot(data2.index, data2["D"], "g-.", label="D")
plt.plot(data2.index, data2["M"], "b-", label="M")
# 设置刻度字体大小
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.title("按年取均值后的数据", fontsize=15)
plt.xlabel("时间", fontsize=15)
plt.ylabel("股票价格", fontsize=15)
plt.legend()

# 使用asfreq()返回原始数据
data3 = data.resample("W-MON").asfreq()
print("取每周一的数据：\n",data3[:5])

plt.sca(ax3)    # 选择子图
plt.plot(data3.index, data3["C"], "r--", label="C")
plt.plot(data3.index, data3["D"], "g-.", label="D")
plt.plot(data3.index, data3["M"], "b-", label="M")
# 设置刻度字体大小
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.title("每周一的数据", fontsize=15)
plt.xlabel("时间", fontsize=15)
plt.ylabel("股票价格", fontsize=15)
plt.legend()

#调整子图间距: wspace调整横向距离，hspace调整纵向距离
plt.subplots_adjust(hspace=0.8)
plt.show()
